<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
    /*
    * this存在的意义：使代码能够交给各自的对象去执行
    *   这种思想：面向对象的思想
    *
    *
    *
    * */

    //做一个计算器的功能：1.增加1 2.平方 3.输出现在的值

    //没有面向对象的方法:
    let result = 0

    function  add1(){
        result++
    }

    function sqr(){
        result *= result
    }

    function getValue(){
        return result
    }
    add1()
    add1()
    sqr()
    getValue()
    //执行起来看得稀碎

    //面向对象的封装

    //对象生成器

    function getCalc(){
        return {
            result: 0,
            add1:function (){
                this.result++
            },
            sqr:function (){
                this.result *= this.result
            },
            getValue:function (){
                return this.result
            }
    }

    let calc1 = getCalc() //这样就能同时生成好几个对象还不用改新的属性名

    let calc2 = getCalc()

    calc1.add1() //将功能由window调用执行改成了由对象去调用执行
    calc1.add1()
    calc1.sqr()
    calc1.getValue()



</script>
</body>
</html>